Skip to content

Add dependency dump script for supply chain auditing#2

Open
smurching wants to merge 4 commits intomainfrom
dump-dependencies-script
Open

Add dependency dump script for supply chain auditing#2
smurching wants to merge 4 commits intomainfrom
dump-dependencies-script

Conversation

@smurching
Copy link
Copy Markdown
Owner

Summary

Adds scripts/dump-dependencies.py — clones (or scans a local) repo and dumps all direct and transitive dependencies to a CSV, useful for SQL-querying against newly-discovered compromised package lists.

Output schema: repo, package_name, dependency_type, dependency, version_spec, min_version

Sources parsed:

  • pyproject.toml → direct PyPI deps (dependency, optional:<group>, build, dev-group:<g>)
  • package.json → direct npm deps (dependencies, devDependencies, peerDependencies, optionalDependencies)
  • uv.locktransitive-pypi (exact pinned versions for full transitive closure)
  • package-lock.jsontransitive-npm (full resolved node_modules tree)

Usage:

# Clone and scan a remote repo
python scripts/dump-dependencies.py --repo https://github.com/org/repo

# Scan local repo
python scripts/dump-dependencies.py --repo . --out deps.csv

Test plan

  • python scripts/dump-dependencies.py --repo . produces a CSV with direct + transitive deps
  • python scripts/dump-dependencies.py --repo https://github.com/smurching/databricks-ai-bridge clones and scans successfully

🤖 Generated with Claude Code

smurching and others added 4 commits March 22, 2026 12:42
scripts/dump-dependencies.py clones (or scans a local) repo and dumps
all direct and transitive dependencies to a CSV for SQL-based auditing
against newly-discovered compromised package lists.

Schema: repo, package_name, dependency_type, dependency, version_spec, min_version

Sources parsed:
  - pyproject.toml  → direct PyPI deps (dependency, optional, build, dev-group)
  - package.json    → direct npm deps (dependencies, devDependencies, peer, optional)
  - uv.lock         → transitive-pypi (exact pinned versions)
  - package-lock.json → transitive-npm (full resolved node_modules tree)

Usage:
  python scripts/dump-dependencies.py --repo https://github.com/org/repo
  python scripts/dump-dependencies.py --repo . --out deps.csv

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
scripts/dump-dependencies.py clones (or scans a local) repo and dumps
all direct and transitive dependencies to a CSV for SQL-based auditing
against newly-discovered compromised package lists.

Schema: repo, package_name, dependency_type, dependency, version_spec, min_version

Sources parsed:
  - pyproject.toml  → direct PyPI deps (dependency, optional, build, dev-group)
  - package.json    → direct npm deps (dependencies, devDependencies, peer, optional)
  - uv.lock         → transitive-pypi (exact pinned versions)
  - package-lock.json → transitive-npm (full resolved node_modules tree)

Usage:
  python scripts/dump-dependencies.py --repo https://github.com/org/repo
  python scripts/dump-dependencies.py --repo . --out deps.csv

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…d tests

- Move semver parsing logic to scripts/min_version.py — core use case
  ("do we depend on this package at all") doesn't require it in the main module
- Single rglob traversal over all manifest types instead of 4 separate passes
- Fix redundant min() called 3x on same list (now computed once → best)
- Replace identity section_map dict with a plain list in parse_package_json
- Add scripts/test_dump_dependencies.py: 45 tests covering min_version,
  normalize_pypi, split_pypi_dep, and all four file parsers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant